#11、编写一个程序，接收一系列以逗号分隔的4位二进制数作为输入，然后检查它们是
#否可被5整除，可被5整除的数字将以逗号分隔的顺序打印。例：0100,0011,1010,1001
#输出结果应该是：1010
'''
value=[]
print('11、输入以逗号风格的4位二进制数：')
items02=[x for x in input().split(',')]
for p in items02:
    intp=int(p,2)
    if not intp%5:
        value.append(p)
print(','.join(value))
print('-----------------------------------------------------------------------')
print('\n')


#12、编写一个程序，找到1000到3000之间所有位数均为偶数的所有数字，比如2000,2002
#等；获得的数字以逗号分隔的顺序打印在一行上。
values=[]
for i in range(1000,3001):
    s=str(i)
    if (int(s[0])%2==0) and (int(s[1])%2==0) and (int(s[2])%2==0) and (int(s[3])%2==0):
        values.append(s)
print('12、')
print(",".join(values))
print('-----------------------------------------------------------------------')
print('\n')


#13、编写一个接收句子并计算字母和数字的程序。假设程序输入：Hello world!123
#输出应该是：字母10数字3
print('3、请输入英文单词或数字：')
s3=input()
d={'DIGITS':0,'LETTERS':0}  #字典方法
for c in s3:
    if c.isdigit():         #判断是否是数字
        d['DIGITS'] +=1
    elif c.isalpha():       #判断是否是字母
        d['LETTERS']+=1
    else:
        pass
print('字母',d['LETTERS'])
print('数字',d['DIGITS'])
print('-----------------------------------------------------------------------')
print('\n')


#14、编写一个接收句子的程序，并计算大写字母和小写字母的数量。假设为程序提供了
#以下输入：Hello world.则输出应该：UPPER CASE 1; LOWER CASE 9
print('14、请输入一些区分大小写的英文单词：')
s4=input()
dict01={'UPPER CASE':0,'LOWER CASE':0} #字典方法
for i in s4:
    if i.isupper():                    #遍历判断大写字母
        dict01['UPPER CASE']+=1        #字典方法计数
    elif i.islower():                  #遍历判断小写字母
        dict01['LOWER CASE']+=1        #字典方法计数
    else:
        pass
print('UPPER CASE',dict01['UPPER CASE'])
print('LOWER CASE',dict01['LOWER CASE'])
print('-----------------------------------------------------------------------')
print('\n')


#15、编写一个程序，计算a+aa+aaa+aaaa的值，给定的数字作为a的值。假设为程序提供
#了一下输入：9  ，则输出应该是11106
print('15、请输入一个小于10的整数')
a=input()
n1=int('%s'%a)
n2=int('%s%s'%(a,a))
n3=int('%s%s%s'%(a,a,a))
n4=int('%s%s%s%s'%(a,a,a,a))
print(n1+n2+n3+n4)
print('-----------------------------------------------------------------------')
print('\n')


#16、使用列表推导输出列表中的每一个奇数，该列表由一系列逗号风格的数字输入。
print('16、请输入一些以逗号分开的数字：')
values=input()
numbers=[x for x in values.split(',')if int(x)%2!=0]
print(','.join(numbers))
print('-----------------------------------------------------------------------')
print('\n')


#17、编写一个程序，按升序对（名字、年龄、得分）元组进行排序，其中name是字符串，
#age和height是数字，元组由控制台输入。排序标准是：
#1：根据名称排序，2：然后根据年龄排序，3：然后按分数排序。
#优先级name>age>得分。
#如果给出一下元组作为程序的输入：
#Tom,19,80; John,20,90; Jony,17,91; Json,21,85
from operator import itemgetter,attrgetter
l=[]
print('17、请输入：')
while True:
    s=input()
    if not s:
        break
    l.append(tuple(s.split(',')))
    break
print(sorted(l,key=itemgetter(0,1,2)))
print('-----------------------------------------------------------------------')
print('\n')


#18、使用生成器定义一个类，该生成器可以在给定范围0和n之间迭代可被7整除的数字。
def putNumbers(n):
    i = 0
    while i<n:
        j=i
        i+=1
        if j%7==0:
            yield j      #yield是一个关键字，用于从函数中返回一个生成器对象
for i in putNumbers(100):
    print(i)
print('-----------------------------------------------------------------------')
print('\n')


#19、编写一个程序，赖计算每个单词出现的频率，按字母顺序对键进行排序后输出。
#假设程序输入：New to Python or choosing between Python 2 and Python 3? Read Python 2 or Python 3.
#则输出应该是：

"""
2:2
3.:1
New:1
Python:5
Read:1
and:1
between:1
choosing:1
or:2
to:
"""

freq={}
print('19、请输入：')
line=input()
for word in line.split():
    freq[word]=freq.get(word,0)+1
words = sorted(freq.keys())
for w in word:
    print('%s:%d'%(w,freq[w]))
print('-----------------------------------------------------------------------')
print('\n')
'''

#20、写一个可以计算数字平方值的方法。**
def square(num):
    return num**2
print('20、')
print(square(2))
print(square(3))
print('-----------------------------------------------------------------------')
print('\n')


#21、Python有许多内置函数，如果不知道如何使用它，可以在线阅读文档或查找一些书籍。
#请编写一个程序来打印一些python内置函数文件。例如abs(),int()   (doc)
print('21、')
print(abs.__doc__)
print(int.__doc__)
print(input.__doc__)
def square1(num):
    return num**2
print(square1(2))
print(square1.__doc__)
print('-----------------------------------------------------------------------')
print('\n')


#22、定义一个类，它具有类参数并具有相同的实例参数。实例参数需要在init方法中添加
class Person:
    name='Person'
    def __init__(self,name=None):
        self.name = name
jeffery = Person("Jeffery")
print('22、')
print('%s name is %s'%(Person.name,jeffery.name))
nico=Person()
nico.name='Nico'
print('%s name is %s'%(Person.name,nico.name))
print('-----------------------------------------------------------------------')
print('\n')

#23、定义一个可以计算两个数之和的函数（两个数字作为参数的函数，并在函数中计算并返回值）
def suntion(number1,number2):
    return number1+number2
print(suntion(4,2))




